#include "windowcontroller.h"
#include "../dao/saledao.h"
#include "../dao/orderroledao.h"
#include"../poco/charge.h"
#include"../poco/bill.h"
#include"../dao/orderdao.h"


/* edit by cheney
 * 对窗口进行操作的文件
 *
 *
 * */

WindowController::WindowController()
{

}


//为订单添加食物
void WindowController::addSelectSale(SaleBase* sale){
    /* 直接调用order的addFood方法即可
     * */
    sale->status=SaleBase::STATUS_exam;
    order.addFood(sale);

}

//为订单添加优惠
void WindowController::addSelectOrderRole(OrderRoleBase* orderRole){
    order.addOrderRole(orderRole);
}

//结算，进行收费操作，数据库操作
bool WindowController::checkOut(){
    double price=order.getPrice();

    //先进行收费
    Bill bill;
    bill.price=price;
    bill.username=user.phone;
    bill.window_id=win.id;
    bill.description=order.toString();
    bool re=false;
    if(Charge::getInstance()->chargePrice(order))
    {
        //收费成功
        bill.status=Bill::STATUS_succeed;
        re=true;
    }
    else
        bill.status=Bill::STATUS_failed;
    //插入数据库
    //测试时默认成功
    bill.status=Bill::STATUS_succeed;
    re=true;
    OrderDao().insert(bill);
    order.clear();
    return re;
}

//为窗口添加菜
bool WindowController::addSale(SaleBase* sale){
    /* 新建菜品
     * */

    SaleDao db;
    db.insertSale(sale, this->win);
    return true;

}

//为窗口添加优惠
bool WindowController::addOrderRole(OrderRoleBase* _order){
    /* 新建一个优惠信息
     * */

    OrderRoleDao db_discount_dao;
    // 插入优惠信息
    if(!db_discount_dao.insert(_order, this->win))
        return false;

    return true;
}
